内容过渡动画
contentTransition
修饰符用于指定当视图 内容发生变化 时所应用的动画过渡效果。不同于 .transition(...)
这种控制视图出现或消失的动画,contentTransition
仅作用于视图内部内容的更新,例如 Text
文本变化、Image
图标替换等。
适用于需要在数据变化时提供平滑视觉过渡的场景,增强界面响应性和用户体验。
类型定义
1contentTransition?: ContentTransition
可选值说明(ContentTransition
)
| 值 | 说明 |
"identity"
- 默认行为,不进行任何动画处理。
- 内容会直接更新,无任何过渡效果。
1<Text contentTransition="identity">{value}</Text>
"interpolate"
- 尝试在旧内容与新内容之间进行插值动画。
- 适用于颜色、形状、可插值视图等类型。
1<Rectangle fill={color} contentTransition="interpolate" />
"opacity"
- 使用透明度进行过渡:旧内容淡出,新内容淡入。
- 通用型过渡动画,适用于各种视图。
1<Text contentTransition="opacity">{message}</Text>
"numericText"
- 专为数字文本(
Text
)设计的过渡动画。
- 适用于数字更新场景,如统计数字或分数显示。
1<Text contentTransition="numericText">{score}</Text>
"numericTextCountsUp"
- 适用于 数字递增 的动画优化。
- 类似计数器的上升效果。
1<Text contentTransition="numericTextCountsUp">{level}</Text>
"numericTextCountsDown"
- 适用于 数字递减 的动画优化。
- 常用于倒计时、剩余时间等场景。
1<Text contentTransition="numericTextCountsDown">{remainingTime}</Text>
"symbolEffect"
- 针对 SF Symbols 图标(如
Image(systemName)
)的默认动画。
- 仅对符号图标生效,其他视图不受影响。
1<Image
2 systemName={isOn ? "lightbulb.fill" : "lightbulb"}
3 contentTransition="symbolEffect"
4/>
"symbolEffectAutomatic"
- 系统自动选择合适的符号动画方式。
- 常用于上下文自适应的图标切换。
1<Image
2 systemName={icon}
3 contentTransition="symbolEffectAutomatic"
4/>
"symbolEffectReplace"
- 以过渡方式替换符号图层。
- 提供比直接替换更平滑的过渡效果。
1<Image
2 systemName={currentSymbol}
3 contentTransition="symbolEffectReplace"
4/>
"symbolEffectAppear"
/ "symbolEffectDisappear"
- 控制符号图标的显现或消失动画。
- 通常结合条件渲染(
if
)使用。
1{isShown
2 ? <Image
3 systemName="checkmark"
4 contentTransition="symbolEffectAppear"
5 />
6 : null
7}
"symbolEffectScale"
- 内容变化时应用缩放动画。
- 常用于状态切换或强调某个图标时使用。
1<Image
2 systemName={statusIcon}
3 contentTransition="symbolEffectScale"
4/>
用法总结
过渡类型 |
使用场景 |
identity |
无动画,直接更新内容 |
interpolate |
可插值类型(颜色、形状)之间的过渡 |
opacity |
通用型淡入淡出 |
numericText |
数字变动过渡 |
numericTextCountsUp |
数字递增动画(计数器) |
numericTextCountsDown |
数字递减动画(倒计时) |
symbolEffect |
SF Symbols 图标切换动画 |
symbolEffectAutomatic |
系统自动选择图标过渡方式 |
symbolEffectReplace |
符号图层替换过渡 |
symbolEffectAppear / Disappear |
控制符号显现或消失动画 |
symbolEffectScale |
缩放动画,用于状态变更反馈 |
说明
- 该修饰符不会影响视图的布局或层级,仅作用于“内部内容”的视觉表现。
- 对于 SF Symbols 图标变化,推荐使用符号专属的过渡类型以获得最佳动画效果。